昨天我們已經成功開啟第一台 AWS EC2 主機,體驗了雲端主機。
今天,我們要更進一步 —— 把 Node.js 專案實際部署到雲端主機上!
這篇文章將帶你完成從 0 到上線的所有流程:
名稱 : ithome2025-ec2
選擇 AMI:選擇 Ubuntu(這邊使用筆者較熟悉的 Ubuntu 22.04 LTS)
選擇實例類型:t3.micro
金鑰對(重要):
.pem
檔案並妥善保存(例如:my-key.pem
)網路設定:
✅ 允許 SSH 流量(來自 0.0.0.0/0 或您的 IP)
✅ 允許 HTTP 流量(port 80)
✅ 允許來自網際網路的 HTTPS 流量(可選)
🔧 額外新增自訂 TCP 規則:port 3000(Node.js 應用預設埠)
儲存空間:預設 8GB 足夠
點擊「啟動實例」
等待執行個體狀態變為 "執行中" 後:
成功連接後會看到 Ubuntu 的歡迎訊息。
在 EC2 實例中執行:
# 更新系統套件
sudo apt update
sudo apt upgrade -y
# 安裝 Node.js 20.x(LTS 版本)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# 驗證安裝
node --version # 應顯示 v20.x.x
npm --version # 應顯示 10.x.x
# 安裝 Git(用於複製專案)
sudo apt install -y git
接下來,我們要把專案實際部署到 AWS EC2 上。
不過目前我們還沒有啟用 RDS 或其他雲端服務,因此這次的部署目標很單純:
先讓 Node.js + Express 伺服器能在雲端成功啟動運作,
暫時不涉及資料庫連線設定。
為了確保環境一致,我們會回到專案中尚未整合資料庫的版本,也就是以下這個 commit:
# 複製專案
git clone https://github.com/ArvinYang1925/iThome2025-node-ts.git
cd iThome2025-node-ts
# 切換到特定 commit
git checkout 342fd7f5ee9ece202ef2ec2a00c10b05d1c76a4a
在 EC2 實例中:
# 進入專案目錄
cd ~/iThome2025-node-ts
# 安裝依賴
npm install
# 編譯 TypeScript 到 JavaScript
npx tsc
編譯後會在 dist/
目錄產生 JavaScript 檔案。
# 直接運行編譯後的 JS
node dist/app.js
您應該會看到:
🚀 Server running on http://localhost:3000
測試方式:
或在瀏覽器訪問 http://您的EC2公有IP:3000
如果看到 "Hello, iThome2025 !",恭喜成功!🎉
PM2 是 Node.js 的程序管理工具,可以讓應用程式在背景持續運行:
# 安裝 PM2
sudo npm install -g pm2
# 使用 PM2 啟動應用
pm2 start dist/app.js --name "ithome-app"
# 查看應用狀態
pm2 status
# 查看日誌
pm2 logs
# 設定開機自動啟動
pm2 startup
PM2 常用指令:
pm2 restart ithome-app # 重啟
pm2 stop ithome-app # 停止
pm2 delete ithome-app # 刪除
pm2 logs ithome-app # 查看日誌
至此,我們已經完成了從本地開發環境到 AWS 雲端部署的流程 🎉
這一步的意義不只是讓網站能被全世界訪問,更代表著你掌握了開發者的三大核心能力:
接下來,我們會逐步探索 AWS RDS 等雲端服務
慢慢讓這個 Node.js 專案成為一個完整的雲端應用 🚀
commit message: Day 6 - set up Express + TS environment